//
//  BaseViewController.swift
//  weiboDemo
//
//  Created by zq on 2020/10/27.
//

import UIKit

class BaseViewController: UIViewController {
    
    var tableView : UITableView?
    var refreshControl : UIRefreshControl?
    var isPullUp = false
//    var userLogon = false
    var userLogon = true
    var visitorInfo : [String:String]? //访客视图数据

    
    override func viewDidLoad() {
        super.viewDidLoad()
        userLogon ? setUpTableView() : setUpVisitView()
        setupUI()
        loadData()
    }
    
    
    @objc func loadData() {
        refreshControl?.endRefreshing() //如果子类没有实现,默认要停止刷新
    }
}

extension BaseViewController{
    
    @objc func setupUI() -> () {
        view.backgroundColor = UIColor.cz_random()
    }
    
    private func setUpVisitView(){
        let visitView = VistorView(frame: view.bounds)
        view.addSubview(visitView)
        visitView.visitorInfo = visitorInfo
    }
    
    private func setUpTableView() {
        tableView = UITableView(frame: view.bounds, style: .plain)
        view.addSubview(tableView!)
        tableView?.dataSource = self
        tableView?.delegate = self
        //添加刷新控件
        refreshControl = UIRefreshControl()
        tableView?.addSubview(refreshControl!)
        refreshControl?.addTarget(self, action: #selector(loadData), for: .valueChanged)
    }
}

/**
 使用extension 对不同的功能的代码,进行分类管理
 */
extension BaseViewController : UITableViewDataSource,UITableViewDelegate {
    
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 0
    }
    
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        return UITableViewCell()
    }
    
    func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
        let currentSection = indexPath.section
        let currentRow = indexPath.row
        
        //当前的section 一共有多少个row
        let currentSectionRowsCount = tableView.numberOfRows(inSection: currentSection)
        print("currentRow:\(currentRow)  --- rowsCount: \(currentSectionRowsCount)")
        
        //说明滑动到底部了,-1:是因为currentRow是从0开始
        // -1:正好滑动到底部,开始加载更过,考虑到有可能网络不好,可以调整成为距离滑动到底部还有三个cell的时候,加载更多
        if currentRow == currentSectionRowsCount - 3 {
            print("上拉加载")
            isPullUp = true
            loadData()
        }
    }
    
}
